package com.ssy.lingxi.system.service;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.system.dto.request.*;
import com.ssy.lingxi.system.dto.response.PlatformProcessResponse;
import com.ssy.lingxi.system.dto.response.RoleResponse;
import com.ssy.lingxi.system.entity.Role;

import java.util.List;

/**
 * 系统角色业务管理
 *
 * @author wrc
 * @date 2020/5/12
 */
public interface RoleService {

    /**
     * 分页查询角色列表
     *
     * @author wrc
     * @date 2020/5/12
     */
    Wrapper<PageData<RoleResponse>> roleList(RoleRequest roleRequest);

    /**
     * 添加角色会员
     *
     * @author wrc
     * @date 2020/5/12
     */
    Wrapper<Role> roleAdd(RoleAddRequest roleRequest);

    /**
     * 修改角色会员
     *
     * @author wrc
     * @date 2020/5/12
     */
    Wrapper<Void> roleUpdate(RoleUpdateRequest request);

    /**
     * 停用角色
     *
     * @author wrc
     * @date 2020/5/12
     */
    Wrapper<Void> roleStop(RoleStopRequest request);

    /**
     * 启用角色
     *
     * @author wrc
     * @date 2020/5/12
     */
    Wrapper<Void> roleStart(RoleStopRequest request);

    /**
     * 删除角色
     *
     * @author wrc
     * @date 2020/5/12
     */
    Wrapper<Void> roleDelete(RoleStopRequest request);

    /**
    * 角色详情
    * @author wrc
    * @date 2020/8/3
    */
    Wrapper<RoleResponse> roleDetails(RoleStopRequest request);

    /**
     * 查询角色权限菜单勾选的按钮Id列表
     * @param request 接口参数
     * @return 按钮Id列表
     */
    Wrapper<List<Long>> findRoleMenuButtons(RoleButtonRequest request);

    /**
     * 查询角色关联的会员审核（注册）流程列表
     * @param request 接口参数
     * @return 已配置的流程Id，以及所有会员审核（注册）流程列表
     */
    Wrapper<PlatformProcessResponse> findPlatformProcesses(RoleIdRequest request);

    /**
     * 新增或修改角色关联的会员审核（注册）流程列表
     * @param request 接口参数
     * @return 操作结果
     */
    Wrapper<Void> insertOrUpdateRolePlatformProcess(RolePlatformProcessRequest request);
}
